package com.pearl.generator.pojo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.pearl.generator.pojo.entity.BaseEntity;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 策略配置表
 * </p>
 *
 * @author TangDan
 * @since 2022-08-05
 */
@Getter
@Setter
@TableName("pearl_generator_strategy_config")
@ApiModel(value = "GeneratorStrategyConfig对象", description = "策略配置表")
public class GeneratorStrategyConfig extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("主键ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty("名称")
    private String name;

    @ApiModelProperty("数据源ID")
    private Long datasourceId;

    @ApiModelProperty("开启大写命名，默认值:false")
    private Integer enableCapitalMode;

    @ApiModelProperty("开启跳过视图，默认值:false")
    private Integer enableSkipView;

    @ApiModelProperty("禁用 sql 过滤，默认值:true，语法不能支持使用 sql 过滤表的话，可以考虑关闭此开关")
    private Integer disableSqlFilter;

    @ApiModelProperty("启用 schema，默认值:false，多 schema 场景的时候打开")
    private Integer enableSchema;

    @ApiModelProperty("模糊表匹配(sql 过滤)，likeTable 与 notLikeTable 只能配置一项")
    private String likeTable;

    @ApiModelProperty("模糊表排除(sql 过滤)，likeTable 与 notLikeTable 只能配置一项")
    private String notLikeTable;

    @ApiModelProperty("增加表匹配(内存过滤)，include 与 exclude 只能配置一项")
    private String addInclude;

    @ApiModelProperty("增加表排除匹配(内存过滤)，include 与 exclude 只能配置一项")
    private String addExclude;

    @ApiModelProperty("增加过滤表前缀")
    private String addTablePrefix;

    @ApiModelProperty("增加过滤表后缀")
    private String addTableSuffix;

    @ApiModelProperty("增加过滤字段前缀")
    private String addFieldPrefix;

    @ApiModelProperty("增加过滤字段后缀")
    private String addFieldSuffix;

    @ApiModelProperty("实体策略配置")
    private String entityBuilder;

    @ApiModelProperty("controller 策略配置	")
    private String controllerBuilder;

    @ApiModelProperty("mapper 策略配置")
    private String mapperBuilder;

    @ApiModelProperty("service 策略配置	")
    private String serviceBuilder;
}
